「Julia、Python 和 R。」年輕人說,「有什麼編譯器剛好可以處理 Julia,又可以處理 Python 和 R?」
雪比望著他。「Jupyter Notebook。」她不耐煩的說。「不只 Julia、Python 和 R,Jupyter Notebook 甚至可以支援更多種語言。」她回頭看著自己的螢幕,左手輕放在鍵盤上,敲了兩三下。~節錄自《抓羊駝的好日子》
工欲善其事,必先利其器。想要做一份漂亮簡報,你要會用ppt。想要知道最新的八卦,你要會上PTT。而想要輕鬆舒適的編寫一份 Python 的程式碼,你要會用 Python 的集成開發環境(Integrated Development Environment, IDE)。今天來介紹我最習慣使用的Python IDE:Jupyter Notebook。➀
由於 Jupyter Notebook 會是許多 Python 工作者選擇的 IDE,因此 Anaconda 已經很貼心的將 Jupyter Notebook 內建在資料庫裡了。一旦我們有了 Anaconda,不需要特別安裝什麼,就可以執行 Jupyter Notebook。本來是這樣的。不過呢,我們昨天建置的新環境,是一個乾淨清爽的空間,裡面可沒有這些預先安裝的套件。別擔心,今天我們就來從安裝套件開始做起。怎麼做呢?這次我要走樸素路線,因此首先開啟 Anaconda Prompt,進入我們創建好的Python 環境(給大家一點提示:conda activate ironman_env
)。接著輸入conda install jupyter notebook
,系統就會開始解析環境,檢查還有哪些相輔相成的套件需要同時安裝。檢查完畢,熟悉的Proceed ([y]/n)?
,Enter 大膽按下去,系統就開始幫你安裝 Jupyter Notebook 以及相關的套件了。
安裝結束後,在 Anaconda Prompt 輸入jupyter notebook
就可以踏出我們編寫 Python 程式碼的第一步了。不過先等等。我們先選擇一個適當的地方來開啟 Jupyter Notebook。什麼意思呢?Jupyter Notebook 開啟之後,當次我們就只能在該目錄以及該目錄底下的子目錄裡工作,包括開啟檔案和儲存檔案。舉個例子來說:
(ironman_env) C:\Users\MyName>jupyter notebook
那麼這次我們就只能在 C:\Users\MyName 這個目錄,以及底下的子目錄裡工作,如 C:\Users\MyName\Desktop 、C:\Users\MyName\Documents、C:\Users\MyName\Downloads 等等。
幾個簡單的指令教大家怎麼在 Anaconda Prompt 裡來去自如,自由自在遊走在不同目錄間。
cd
後面輸入想去的子目錄資料夾名稱,注意是子目錄喔,所以只能往下找。(ironman_env) C:\Users\MyName>cd DirName
(ironman_env) C:\Users\MyName\DirName>
cd ..
(ironman_env) C:\Users\MyName>cd ..
(ironman_env) C:\Users>
dir
(ironman_env) C:\Users\MyName>dir
Volume in drive C is Local Disk
Volume Serial Number is B0K0-33XD
Directory of C:\Users\MyName
09/09/2019 09:28 AM <DIR> .
09/09/2019 09:28 AM <DIR> ..
08/19/2019 07:54 AM <DIR> 3D Objects
09/09/2019 09:29 AM <DIR> Anaconda3
08/19/2019 07:54 AM <DIR> Contacts
08/31/2019 10:28 PM <DIR> Desktop
08/19/2019 07:54 AM <DIR> Documents
09/09/2019 02:17 PM <DIR> Downloads
08/19/2019 07:54 AM <DIR> Favorites
09/09/2019 09:48 PM <DIR> Google Drive
08/19/2019 07:54 AM <DIR> Links
08/19/2019 07:54 AM <DIR> Music
09/06/2019 09:58 AM <DIR> OneDrive
09/08/2019 09:15 PM <DIR> Pictures
08/19/2019 07:54 AM <DIR> Saved Games
08/19/2019 07:54 AM <DIR> Searches
01/03/2017 11:53 PM <DIR> Tracing
08/19/2019 07:54 AM <DIR> Videos
16 Dir(s) 46,354,628,608 bytes free
cd
卻沒辦法去到 D 槽,得換個方法,直接輸入D:
(ironman_env) C:\Users\MyName>D:
(ironman_env) D:\>
好了,各位都選好自己想要工作的資料夾了,那就在 Anaconda Prompt 裡輸入jupyter notebook
囉!你就會看到一堆文字跳出來,急著告訴你他們正在努力工作沒有偷懶,然後接著,電腦預設的瀏覽器就會打開。等等,我沒有開啟他,為什麼瀏覽器會跑出來啊?因為 Jupyter Notebook 是憑依在瀏覽器上運作的 IDE。喔喔喔這個介面,喔喔喔這個設計,是不是樸素中又不失個性呀。好啦,讓我們開始來學習它吧。
開啟 Jupyter Notebook 之後,會來到一個主目錄的畫面。這看起來就像是一個 Jupyter Notebook 版本的檔案總管。你可以從這個頁面,進入子目錄資料夾、開啟 ipynb 檔(Jupyter Notebook 文件的檔案格式)、開啟 py 檔(Python 執行檔的檔案格式)、甚至開啟 txt 檔。要開啟一個空白的 ipynb 檔,重新開始編寫程式碼,只要點擊右上角的 New,選擇要用的程式語言(這裡我們選 Python),就會在新分頁看到一個可以撰寫程式的工作區了!
圖一、Jupyter Notebook 的主目錄,以及開新檔案的位置
在 Jupyter Notebook 裡,是用一個一個的窗格(cell)當作執行程式的段落。窗格按照類型可以分成三種:筆記區(markdown)、編碼區(code)、原文區(raw),我常用的是筆記區跟編碼區。選擇了窗格之後,可以在如圖二的地方切換窗格的類型。
圖二、不同類型的窗格。從上到下:編碼區、筆記區、原文區。點選紅框處可以切換窗格類型。
編碼區,正如其名,在這個窗格內的文字就是程式碼,可以編輯也可以執行觀看結果。
筆記區,正如其名,在這個窗格內的文字都不會被當作程式碼,因此可以在裡面寫下關於程式碼的說明、註解,或者寫一篇作文。為了方便呈現筆記的段落、分節或重點,Jupyter Notebook 提供了一些不同的文字格式。如:#標題1、**粗體字**、`等寬字`。(悄悄說一聲,如果你是鐵人賽的工作者,這個 markdown 跟鐵人賽的 markdown 是一樣的)
圖三、筆記區的不同文字格式
當在使用 Jupyter Notebook 時,第二件需要注意的事是操作的模式。這個分成兩種:編輯模式(edit mode)跟命令模式(command mode)。從窗格外框的顏色可以輕易分辨目前的操作模式。綠色外框如圖四為編輯模式,藍色外框如圖五為命令模式。處在編輯模式下,就跟在使用文字編輯器一樣,有游標會顯示於當前的工作窗格,可以在游標處撰寫程式碼。處在命令模式下,則沒辦法輸入、修改程式碼,但可以利用一些快捷鍵操作窗格、處理檔案、執行程式碼。在不同模式之間切換,也不困難。當處在編輯模式,只要按 Esc 或用滑鼠在窗格外隨處點一下,就可以進入命令模式。而如果處在命令模式,只要按 Enter 或是用滑鼠在窗格內點一下,即可進入編輯模式。是不是很簡單呢?
圖四、編輯模式時的窗格外觀
圖五、命令模式時的窗格外觀
說了這麼多,還不知道要怎麼執行程式碼呢。不論在編輯模式或是命令模式,執行程式碼的方式都是一樣的。Ctrl + Enter可以執行當前窗格的程式碼並顯示結果,如圖六。Shift + Enter除了執行當前窗格的程式碼並顯示結果外,還會自動在下方產生新的窗格供您繼續編輯,如圖七。
圖六、Ctrl + Enter 執行選擇窗格內的程式碼
圖七、Ctrl + Enter 執行選擇窗格內的程式碼
快捷鍵的部分。因為我還達不到手速180 apm這樣神乎其技的境界,為了讓操作Jupyter Notebook更方便快捷,我習慣會記一些快捷鍵。
限於編輯模式(edit mode)下的快捷鍵:
圖八、把圖一再放上來,從右上角的 New 再往上看,就可以找到 Quit 啦
最後的最後,如果大家還沒開始安裝 Anaconda,或是人在外面,裝了 Anaconda 的電腦不在手邊,但是看了這篇文章之後手癢(最好?)想趕快來操作一下,苦惱的大家該怎麼辦呢?答案是,Jupyter Notebook 官方很貼心的提供了線上的 Jupyter Notebook 服務,甚至還有比這篇文章更詳細的線上教學。有興趣的人,可以點這裡去玩玩。
參考資料:
➀ Jupyter Notebook 官網、Jupyter Notebook 教學
註:對於此系列文有興趣的讀者,歡迎參考由此系列文擴編成書的 LINE Bot by Python,以及最新的系列文《賴田捕手:追加篇》
第 31 天 初始化 LINE BOT on Heroku
第 32 天 快速回覆 QuickReply 介紹
第 33 天 妥善運用 Heroku APP 暫存空間
第 34 天 妥善運用 LINE Notify 免費推播
第 35 天 製造 Deploy to Heroku 按鈕